/**
 * 版权所有 2009-2012山东新北洋信息技术股份有限公司
 * 保留所有权利。
 */
package com.linyaonan.leetcode.easy._345;

import java.util.Arrays;
import java.util.List;

/**
 * 编写一个函数，以字符串作为输入，反转该字符串中的元音字母。
 *
 * 示例 1:
 *
 * 输入: "hello"
 * 输出: "holle"
 * 示例 2:
 *
 * 输入: "leetcode"
 * 输出: "leotcede"
 * 说明:
 * 元音字母不包含字母"y"。
 *
 *
 * @ProjectName: leetcode
 * @Package: com.linyaonan.leetcode.easy._345
 * @ClassName: ReverseVowels
 * @Author: linyaonan
 * @Date: 2019/12/23 11:15
 */
public class ReverseVowels {
    public String reverseVowels(String s) {
        if (s == null || s.length() <= 1) {
            return s;
        }
        List<Character> list = Arrays.asList('a', 'e', 'i', 'o', 'u','A','E','I','O','U');
        int start = 0;
        int end = s.length() - 1;
        char[] chars = s.toCharArray();
        while(start < end) {
            // 头指针
            if (list.contains(s.charAt(start))) {
                // 尾指针
                if (list.contains(s.charAt(end))) {
                    char temp = chars[end];
                    chars[end] = chars[start];
                    chars[start] = temp;
                    start++;
                }
                end--;
            } else {
                start++;
            }
        }
        StringBuilder buffer = new StringBuilder();
        for (char aChar : chars) {
            buffer.append(aChar);
        }
        return buffer.toString();
    }
}
